Software-defined networking (SDN) is an approach to computer networking that permits network administrators to manage network services through abstraction of lower-level functionality. This abstraction may be accomplished by separating the control plane (the system that makes decisions about where packets are sent) from the data plane (the underlying systems that forward the packets to the selected destination). Abstracting control from forwarding allows network administrators to dynamically adjust network-wide traffic flow to meet changing needs. Network intelligence may be centralized in software-based SDN controllers that maintain a global view of the network, which appears to policy engines and applications as a single, logical device. Furthermore, SDN permits network managers to configure, manage, secure, and optimize network resources quickly via dynamic, automated SDN programs.